package com.grakol.algorithm.samples.tests;

import static org.junit.Assert.assertTrue;

import org.junit.Before;
import org.junit.Test;

import com.grakol.algorithm.samples.MaxSubArray;

public class TestMaxSubArray {
	private MaxSubArray _tMaxSubArray;
	private int[] _array1 = { 1, 2, 3, 4, 5, 6 };
	private int[] _array2 = { -1, -3, -5, 1, 3, -7 };
	private int[] _array3 = { -3, -6, -2, -5, -4, -7 };
	private int[] _array4 = { -3, 10, -2, 8, -5, 4 };
	
	@Before
	public void setUp() {
		_tMaxSubArray = new MaxSubArray();
	}

	@Test
	public void runTest() {
		MaxSubArray.Result result = _tMaxSubArray.findMaxSubArray( _array1 );
		assertTrue( result.left == 0 );
		assertTrue( result.length == 6 );
		assertTrue( result.value == 21 );
		result = _tMaxSubArray.findMaxSubArray( _array2 );
		assertTrue( result.left == 3 );
		assertTrue( result.length == 2 );
		assertTrue( result.value == 4 );
		result = _tMaxSubArray.findMaxSubArray( _array3 );
		assertTrue( result.left == 2 );
		assertTrue( result.length == 1 );
		assertTrue( result.value == -2 );
		result = _tMaxSubArray.findMaxSubArray( _array4 );
		assertTrue( result.left == 1 );
		assertTrue( result.length == 3 );
		assertTrue( result.value == 16 );
	}
	
//	public static void main( String[] args ) {
//		TestMaxSubArray t = new TestMaxSubArray();
//		MaxSubArray a = new MaxSubArray();
//		MaxSubArray.Result r = a.findMaxSubArray( t._array4 );
//		System.out.println( "left=" + r.left + "; length=" + r.length + "; value=" + r.value );
//	}
}
